#include <iostream>
#include <string>

/*
    类模板中成员函数创建时机是在调用阶段，
    调用时才会创建出具体的函数。
*/
class Person1
{
public:
    void showPerson1()
    {
        std::cout << "Person1 show" << std::endl;
    }
};

class Person2
{
public:
    void showPerson2()
    {
        std::cout << "Person2 show" << std::endl;
    }
};

template <class T>
class MyClass
{
public:
    T obj;

    // 类模板中的成员函数调用时，才会创建出具体的函数
    void func1()
    {
        obj.showPerson1();
    }

    void func2()
    {
        obj.showPerson2();
    }
};

void test01()
{
    MyClass<Person1> m;
    m.func1();
    // m.func2(); // 错误，Person1类中没有showPerson2函数
}

int main()
{
    
    return 0;
}